package iks.utils.geom 
{
	import flash.display.*;
	
	/**
	 * 自定义圆形类, 圆心为坐标点
	 * @author StefanieKaka
	 */
	public final class KCircle 
	{
		/**
		 * 构造函数
		 * @param	x x坐标
		 * @param	y y坐标
		 * @param	radius 圆半径
		 */
		public function KCircle(x : Number, y : Number, radius : Number) 
		{
			m_x = x;
			m_y = y;
			m_radius = radius;
		}
		
///////////////////////////////////////////////////////////////////////////////////////////////////
// 公共类
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		/**
		 * 设置/获得x坐标
		 */
		public function get x() : Number
		{
			return m_x;
		}
		
		public function set x(value : Number) : void
		{
			m_x = value;
		}
		
		/**
		 * 设置/获得y坐标
		 */
		public function get y() : Number
		{
			return m_y;
		}
		
		public function set y(value : Number) : void
		{
			m_y = value;
		}
		
		/**
		 * 设置/获取半径
		 */
		public function get radius() : Number
		{
			return m_radius;
		}
		
		public function set radius(value : Number) : void
		{
			m_radius = value;
		}
		
		/**
		 * 获得圆的外切正方形
		 */
		public function getBounds() : KRectangle
		{
			var diameter : Number = m_radius * 2;
			return new KRectangle(m_x, m_y, diameter, diameter);
		}
		
		/**
		 * 绘制矩形图像
		 */ 
		public function draw(graphics : Graphics,
							thickness : Number = 0, lineColor : uint = 0x000000,
							isFill : Boolean = false, fillColor : uint = 0x000000) : void
		{
			graphics.lineStyle(thickness, lineColor);
			
			if (isFill)
			{
				graphics.beginFill(fillColor);
				graphics.drawCircle(m_x, m_y, m_radius);
				graphics.endFill();
			}
			else
			{
				graphics.drawCircle(m_x, m_y, m_radius);
			}
		}
		
		public function toString() : String
		{
			var str : String = "KCircle: [x=" + m_x + ", y=" + m_y + ", radius=" + m_radius + "]";
			return str;
		}

///////////////////////////////////////////////////////////////////////////////////////////////////
// 私有类
///////////////////////////////////////////////////////////////////////////////////////////////////
		
		private var m_x : Number = NaN;
		private var m_y : Number = NaN;
		private var m_radius : Number = NaN;
	}

}

































///////////////////////////////////////////////////////////////////////////////////////////////////
// end file


